package main.singleton;

/**
 * 内部类的实现
 * @author: kejl
 * @create: 2020-07-13 23:48
 */
public class InnerClassSingleton {
    //单例有两个问题：
    //1.实现延时加载
    //2.保证线程安全
    //饿汉，虽然可以保证线程安全，但是不能延时加载，懒汉式，虽然可以延时加载但是不能线程安全复杂，两全其美？
    //内部类的实现
    //但是它并不是安全的
    //https://www.cnblogs.com/happy4java/p/11206105.html 有说明 在反射和序列化中受到攻击

    private InnerClassSingleton(){

    }
    //内部类的初始化机制？？？
    private static class InnerClass{
        public final static InnerClassSingleton innerClassSingleton = new InnerClassSingleton();
    }

    public InnerClassSingleton getInstance(){
        return InnerClass.innerClassSingleton;
    }




}
